package com.ruoyi.pm.service.impl;

import com.ruoyi.common.exception.BusinessException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.pubfun.IdWorker;
import com.ruoyi.pm.domain.ExcPortConfig;
import com.ruoyi.pm.domain.SaasSupplierMain;
import com.ruoyi.pm.mapper.SaasSupplierMainMapper;
import com.ruoyi.pm.service.IExcPortConfigService;
import com.ruoyi.pm.service.ISaasSupplierMainService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 保司自定义加密方法Service业务层处理
 * 
 * @author ruoyi
 * @date 2022-03-22
 */
@Service
public class SaasSupplierMainServiceImpl implements ISaasSupplierMainService 
{
    @Autowired
    private SaasSupplierMainMapper saasSupplierMainMapper;

    @Autowired
    private IExcPortConfigService excPortConfigService;

    /**
     * 查询保司自定义加密方法
     * 
     * @param id 保司自定义加密方法主键
     * @return 保司自定义加密方法
     */
    @Override
    public SaasSupplierMain selectSaasSupplierMainById(Long id)
    {
        return saasSupplierMainMapper.selectSaasSupplierMainById(id);
    }

    /**
     * 查询保司自定义加密方法列表
     * 
     * @param saasSupplierMain 保司自定义加密方法
     * @return 保司自定义加密方法
     */
    @Override
    public List<SaasSupplierMain> selectSaasSupplierMainList(SaasSupplierMain saasSupplierMain)
    {
        return saasSupplierMainMapper.selectSaasSupplierMainList(saasSupplierMain);
    }


    /**
     * 查询保司自定义加密方法及系统方法
     *
     * @param supplierId 保司自定义加密方法
     * @return 保司自定义加密方法集合
     */
    @Override
    public List<SaasSupplierMain> listBySupplierId(Long supplierId){
        return saasSupplierMainMapper.listBySupplierId(supplierId);
    }

    /**
     * 新增保司自定义加密方法
     * 
     * @param saasSupplierMain 保司自定义加密方法
     * @return 结果
     */
    @Override
    public int insertSaasSupplierMain(SaasSupplierMain saasSupplierMain)
    {
        saasSupplierMain.setId(IdWorker.getId());
        saasSupplierMain.setCreateBy(SecurityUtils.getUsername());
        saasSupplierMain.setCreateTime(DateUtils.getNowDate());
        saasSupplierMain.setUpdateBy(SecurityUtils.getUsername());
        saasSupplierMain.setUpdateTime(DateUtils.getNowDate());
        return saasSupplierMainMapper.insertSaasSupplierMain(saasSupplierMain);
    }

    /**
     * 修改保司自定义加密方法
     * 
     * @param saasSupplierMain 保司自定义加密方法
     * @return 结果
     */
    @Override
    public int updateSaasSupplierMain(SaasSupplierMain saasSupplierMain)
    {
        saasSupplierMain.setUpdateBy(SecurityUtils.getUsername());
        saasSupplierMain.setUpdateTime(DateUtils.getNowDate());
        return saasSupplierMainMapper.updateSaasSupplierMain(saasSupplierMain);
    }

    /**
     * 批量删除保司自定义加密方法
     * 
     * @param ids 需要删除的保司自定义加密方法主键
     * @return 结果
     */
    @Override
    public int deleteSaasSupplierMainByIds(Long[] ids)
    {
        //先看一下这个方法是否被引用
        ExcPortConfig excPortConfig = new ExcPortConfig();
        List<ExcPortConfig> excPortConfigs;
        for (Long id : ids) {
            excPortConfig.setMainId(id);
            excPortConfigs = excPortConfigService.selectExcPortConfigList(excPortConfig);
            if(StringUtils.isArray(excPortConfigs) && excPortConfigs.size()>0){
                throw new BusinessException("自定义方法已被引用,不允许删除。");
            }
        }
        return saasSupplierMainMapper.deleteSaasSupplierMainByIds(ids);
    }

    /**
     * 批量删除保司自定义加密方法
     *
     * @param supplierIds 需要删除的保司Id集合
     * @return 结果
     */
    @Override
    public int deleteSaasSupplierMainBySupplierIds(Long[] supplierIds)
    {
        return saasSupplierMainMapper.deleteSaasSupplierMainBySupplierIds(supplierIds);
    }

    /**
     * 删除保司自定义加密方法信息
     * 
     * @param id 保司自定义加密方法主键
     * @return 结果
     */
    @Override
    public int deleteSaasSupplierMainById(Long id)
    {
        return saasSupplierMainMapper.deleteSaasSupplierMainById(id);
    }
}
